package cn.itcast.feign.clients;

import cn.itcast.feign.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 *
 * 第2个知识点：
 * Fiegn非常重要
 *
 * Fegin的使用步骤如下：
 * 1）引入依赖
 * 我们在order-service服务的pom文件中引入feign的依赖：
 * <dependency>
 *     <groupId>org.springframework.cloud</groupId>
 *     <artifactId>spring-cloud-starter-openfeign</artifactId>
 * </dependency>
 * 2）添加注解
 * 在order-service的启动类添加注解开启Feign的功能：
 * @EnableFeignClients//启动类添加注解开启Feign的功能-自动装配功能
 *
 * 3）编写Feign的客户端
 * 在order-service中新建一个接口，内容如下：
 * package cn.itcast.order.client;
 * ​
 * import cn.itcast.order.pojo.User;
 * import org.springframework.cloud.openfeign.FeignClient;
 * import org.springframework.web.bind.annotation.GetMapping;
 * import org.springframework.web.bind.annotation.PathVariable;
 * ​
 * @FeignClient("userservice")
 * public interface UserClient {
 *     @GetMapping("/user/{id}")
 *     User findById(@PathVariable("id") Long id);
 * }
 * 这个客户端主要是基于SpringMVC的注解来声明远程调用的信息，比如：
 * 
 * 服务名称：userservice
 * 请求方式：GET
 * 请求路径：/user/{id}
 * 请求参数：Long id
 * 返回值类型：User
 * 这样，Feign就可以帮助我们发送http请求，无需自己使用RestTemplate来发送了。
 * 4）测试
 * 修改order-service中的OrderService类中的queryOrderById方法，使用Feign客户端代替RestTemplate：
 *
 * 是不是看起来优雅多了。
 * 5）总结
 * 使用Feign的步骤：
 * ① 引入依赖
 * ② 添加@EnableFeignClients注解
 * ③ 编写FeignClient接口
 * ④ 使用FeignClient中定义的方法代替RestTemplate
 *
 * 第2个知识点：
 *
 *
 *
 */
@FeignClient("userservice")//注意接口上面需要填写userservice就是你要远程那个服务工程-
public interface UserClient {
    @GetMapping("/user/{id}")
    User queryById(@PathVariable("id") Long id);
}
